export default Ember.Component.extend({
  classNames: ['permalink-form'],
  formSubmitted: false,
  permalinkType: 'topic_id',

  permalinkTypes: function() {
    return [
      {id: 'topic_id',       name: I18n.t('admin.permalink.topic_id')},
      {id: 'post_id',  name: I18n.t('admin.permalink.post_id')},
      {id: 'category_id', name: I18n.t('admin.permalink.category_id')},
      {id: 'external_url', name: I18n.t('admin.permalink.external_url')}
    ];
  }.property(),

  permalinkTypePlaceholder: function() {
    return 'admin.permalink.' + this.get('permalinkType');
  }.property('permalinkType'),

  actions: {
    submit: function() {
      const Permalink = require('admin/models/permalink').default;

      if (!this.get('formSubmitted')) {
        const self = this;
        self.set('formSubmitted', true);
        const permalink = Permalink.create({url: self.get('url'), permalink_type: self.get('permalinkType'), permalink_type_value: self.get('permalink_type_value')});
        permalink.save().then(function(result) {
          self.set('url', '');
          self.set('permalink_type_value', '');
          self.set('formSubmitted', false);
          self.sendAction('action', Permalink.create(result.permalink));
          Em.run.schedule('afterRender', function() { self.$('.permalink-url').focus(); });
        }, function(e) {
          self.set('formSubmitted', false);
          let error;
          if (e.responseJSON && e.responseJSON.errors) {
            error = I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')});
          } else {
            error = I18n.t("generic_error");
          }
          bootbox.alert(error, function() { self.$('.permalink-url').focus(); });
        });
      }
    }
  },

  didInsertElement: function() {
    var self = this;
    self._super();
    Em.run.schedule('afterRender', function() {
      self.$('.external-url').keydown(function(e) {
        if (e.keyCode === 13) { // enter key
          self.send('submit');
        }
      });
    });
  }
});
